package com.hfb.mashibing.alip8.interview.os.cacheline;

/**
 * @author hfb
 * @Classname One
 * @Description cacheline在同一个cup中 效率低
 */
public class One {
    private static class T {
        public volatile long x = 0L;
    }

    //含有两个Long类型的数据，每个8个字节，大概率会加载到同一个cpu中。
    public static T[] arr = new T[2];

    static {
        arr[0] = new T();
        arr[1] = new T();
    }

    public static void main(String[] args) throws Exception {
        //线程t1修改第一个long 在core1中 由于一致性的存在，需要一个机制做一致性，影响效率
        Thread t1 = new Thread(()->{
            for (long i = 0; i < 1000_0000L; i++) {
                arr[0].x = i;
            }
        });

        //线程t2修改第一个long 在core2中 由于一致性的存在，需要一个机制做一致性，影响效率
        Thread t2 = new Thread(()->{
            for (long i = 0; i < 1000_0000L; i++) {
                arr[1].x = i;
            }
        });

        final long start = System.nanoTime();
        t1.start();
        t2.start();
        t1.join();
        t2.join();
        System.out.println((System.nanoTime() - start)/100_0000);
    }
}

